/***
 * 对于生产环境：
 * 不模块热更新，不需要source map，每次都要复制
 * public文件内容，需要对css，js进行压缩,
 * 需要使用tree-sharking对文件进行处理
 * **/
const path = require('path')
const merge = require('webpack-merge')
const common = require('./webpack.common')
const {CleanWebpackPlugin} = require('clean-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
//由于启用了minimizer，所以导致webpack默认的js压缩不启用，需要手动导入
const TerserWebpackPlugin = require('terser-webpack-plugin')
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')

module.exports = merge(common,{
    //配置模式 development\production\none。对于生产模式来说，会自动运行tree-sharking，其他模式不会
    mode: "production",
    //生产环境使用none
    devtool:"none",
    //使用minimize进行压缩处理
    optimization:{ //优化的意思
        minimize:true,
        minimizer:[
            new TerserWebpackPlugin(),
            new OptimizeCssAssetsWebpackPlugin()
        ]
    },
    plugins:[
        //清除dist目录插件
        new CleanWebpackPlugin(),
        //复制public的插件
        new CopyWebpackPlugin({
            //忽略index.html文件
            // patterns: ['public/favicon.ico',]
            patterns: [{
                from: path.join(__dirname, 'public'),
                globOptions: {
                    ignore: ['index.html']
                },
                force:true
            }]
        })
    ]
})